package com.ayf.payment.game.api.service.platform;

import com.ayf.payment.game.api.dto.MerchantDTO;
import com.ayf.payment.game.api.dto.WxUserDTO;
import com.ayf.payment.game.api.entity.platform.WxUser;

import java.util.List;

public interface WxUserService {

    /**
     * 关注
     *
     * @param wxUser 微信传过来的wxUser对象
     */
    boolean addWxUser(WxUser wxUser);

    /**
     * 取消关注
     *
     * @param wxUser 微信传过来的wxUser对象
     * @return true 取关成功；false 取关失败
     */
    boolean changeWxUserSubscribe(WxUser wxUser);

    /**
     * 绑定微信
     *
     * @param wxUser
     * @param loginAccount
     * @return
     */
    boolean bindWx(WxUser wxUser, String loginAccount);

    /**
     * 解绑
     *
     * @param merchantId
     * @param loginId
     * @return
     */
    boolean unBindWx(Integer merchantId, Integer loginId);

    /**
     * 获取账号微信信息
     *
     * @param merchantId
     * @param loginId
     * @return
     */
    List<WxUser> getWxUser(Integer merchantId, Integer loginId);

    /**
     * 获取账号微信信息
     *
     * @param merchantId
     * @param loginId
     * @return
     */
    WxUser getBindWxUser(Integer merchantId, Integer loginId);

    /**
     * 根据登录账号获取微信Openid
     * @param loginAccount
     * @return
     */
    public WxUser getWxUserByLoginAccount(String loginAccount);

    /**
     * 获取账号微信信息
     *
     * @param merchantId
     * @return
     */
    List<WxUser> getWxUser(Integer merchantId);

    /**
     * 根据openid获取账号微信信息
     *
     * @param openid
     * @return
     */
    WxUser getWxUserByOpenid(String openid);

    /**
     * 根据openid获取账号名称
     *
     * @param openid
     * @return
     */
    String getAccountNameByOpenid(String openid);

    /**
     * 获取绑定的微信信息
     *
     * @param dto
     * @return
     */
    List<WxUserDTO> getWxList(MerchantDTO dto);

    /**
     * 更改是否接收异常消息提醒状态
     *
     * @param dto
     * @return
     */
    boolean updateWxMsgStatus(WxUserDTO dto);

    /**
     * 获取账号信息
     *
     * @param loginId
     * @param type
     * @return
     */
    String getAccount(Integer loginId, Integer type);
}
